/****************************************************************
The class CompositeVent takes the responsibility to 
maintain the composite output of NCUC model that have sill.
Author: Chun-Ming Wang
Date of Modification: 24/06/2006 (dd/mm/yyyy)
"Composite Vent"
****************************************************************/
#pragma once
#ifndef _CompositeVent
#define _CompositeVent
#include "SingleVent.h"

class CompositeVent: public SingleVent
{
public:
	// constructors
	CompositeVent();
	CompositeVent(const double& VentCoe, const double& SelfSill);
	CompositeVent(const CompositeVent &rhs);
	// destructor
	virtual ~CompositeVent();
	// assignment operator
	CompositeVent& operator=(const CompositeVent &rhs);
	// access function
	void sill(const double &SelfSill);
	const double& sill() const;
	// virtual constructor
	virtual CompositeVent* clone() const;
protected:
	// calculate the output of the single vent
	// This behavior of this function depends on the type of the vent
	virtual double calc(const double &SillNCU) const;
private:
    double m_SelfSill; // Sill of the composite vent itself
};
#endif